<?php

class DispatchequipmentController extends Controller {

    /**
     * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
     * using two-column layout. See 'protected/views/layouts/column2.php'.
     */
    public $location;
    public $dispatch;
    public $layout = '//layouts/column2';

    /**
     * @return array action filters
     */
    public function filters() {
        return array(
            'accessControl', // perform access control for CRUD operations
        );
    }

    /**
     * Specifies the access control rules.
     * This method is used by the 'accessControl' filter.
     * @return array access control rules
     */
    public function accessRules() {
        return array(
            array('allow', // allow all users to perform 'index' and 'view' actions

               'users'=>array('@'),
            ),
            array('deny', // deny all users
                'users' => array('*'),
            ),
        );
    }

    /**
     * Creates a new model.
     * If creation is successful, the browser will be redirected to the 'view' page.
     */
    public function actionCreate($dispatch) {
        $model = new Dispatchequipment;
        $model->dispatch=$dispatch;	
        $this->loadObject($dispatch);
        // Uncomment the following line if AJAX validation is needed
        // $this->performAjaxValidation($model);

        if (isset($_POST['Dispatchequipment'])) {
            $model->attributes = $_POST['Dispatchequipment'];
            if ($model->save())
                $this->redirect(array('index','dispatch'=>$model->dispatch));
        }

        $this->render('create', array(
            'model' => $model,
            'location'=>$this->location,
            'dispatch'=>$this->dispatch
        ));
    }

    /**
     * Updates a particular model.
     * If update is successful, the browser will be redirected to the 'view' page.
     * @param integer $id the ID of the model to be updated
     */
    public function actionUpdate() {
       
        if (isset($_POST) && isset($_POST['id'])) {
            $model=  Dispatchequipment::model()->findByPk($_POST['id']);
            $model->attributes = $_POST;
            if ($model->save()){
                echo json_encode(array(
                    'success'=>true,
                    'msg'=>'Update successful'
                ));
            }else{
                echo json_decode(array(
                    'success'=>false,
                    'errors'=>$model->getErrors()
                ));
            }
                
        
        }

    }

    /**
     * Deletes a particular model.
     * If deletion is successful, the browser will be redirected to the 'admin' page.
     * @param integer $id the ID of the model to be deleted
     */
    public function actionDelete($id) {

        // we only allow deletion via POST request
        $model=$this->loadModel($id);
        $dispatch=$model->dispatch;
        $model->delete();              
    }

    /**
     * Lists all models.
     */
    public function actionIndex($dispatch) {
        $this->loadObject($dispatch);
        $this->render('index', array(
            'location' => $this->location,
            'dispatch' => $this->dispatch
        ));
    }

    /**
     * Returns the data model based on the primary key given in the GET variable.
     * If the data model is not found, an HTTP exception will be raised.
     * @param integer the ID of the model to be loaded
     */
    public function loadModel($id) {
        $model = Dispatchequipment::model()->findByPk($id);
        if ($model === null)
            throw new CHttpException(404, 'The requested page does not exist.');
        return $model;
    }

    public function loadObject($dispatch) {
        $this->dispatch = Dispatchdetails::model()->findByPk($dispatch);
        if ($this->dispatch == NULL)
            throw new CHttpException(404, 'The requested page does not exist.');
        $this->location = Locations::model()->find('custno=:custno AND locno=:locno', array(
                    'custno' => $this->dispatch->custno,
                    'locno' => $this->dispatch->locno
                ));
        if ($this->location == NULL)
            throw new CHttpException(404, 'The requested page does not exist.');
    }

    /**
     * Performs the AJAX validation.
     * @param CModel the model to be validated
     */
    protected function performAjaxValidation($model) {
        if (isset($_POST['ajax']) && $_POST['ajax'] === 'dispatchequipment-form') {
            echo CActiveForm::validate($model);
            Yii::app()->end();
        }
    }

    public function actionList($dispatch, $page=0, $sort=NULL) {
        if($page>0)$page--;
            $order=CJSON::decode($sort);
         
            $data=new CActiveDataProvider('Dispatchequipment',array(
                'criteria'=>array(
                    'condition'=>'dispatch=:dispatch',
                    'params'=>array(
                        'dispatch'=>$dispatch
                    ),
                    'order'=>isset($order)?$order[0]['property'].' '.$order[0]['direction']:NULL
                ),
                'pagination'=>array(
                    'pageSize'=>20,
                    'currentPage'=>$page
                )
            ));
            
            if($data!=NULL && count($data->getData())>0){
                $rs=array();
                $rs['totalCount']=$data->getTotalItemCount();
                foreach($data->getData() as $i=>$item){
                    
                    $rs['data'][$i]=$item->getAttributes();
                    $rs['data'][$i]['equipmenttext']=$item->getEquipmentName();
                }
                echo json_encode($rs);
            }
            Yii::app()->end();
    }
    public function actionEquimentList($dispatch,$page=0,$sort=NULL){
        if($page>0) $page--;
        $model=Dispatchdetails::model()->findByPk($dispatch);
        $order=CJSON::decode($sort);
        $data=new CActiveDataProvider('Equipment',array(
            'criteria'=>array(
                'condition'=>'custno=:custno AND locno=:locno',
                'params'=>array(
                    'custno'=>$model->custno,
                    'locno'=>$model->locno
                ),
                'order'=>isset($order)?$order[0]['property'].' '.$order[0]['direction']:NULL
            ),
            'pagination'=>array(
                'pageSize'=>20,
                'currentPage'=>$page
            )
        ));

        if($data!=NULL && count($data->getData())>0){
            $rs=array();
            $rs['totalCount']=$data->getTotalItemCount();
            foreach($data->getData() as $i=>$item){

                $rs['data'][$i]=$item->getAttributes();
                
            }
            echo json_encode($rs);
        }
        Yii::app()->end();
    }
    public function actionSaveEquip($dispatch){
      
        if(isset($_POST['id'])){
            $num = Yii::app()->db->createCommand('select max(counter) from tbl_dispatchequipment where dispatch=:dispatch')
                            ->bindValues(array(
                                'dispatch'=>$dispatch
                            ))->queryScalar();
            $counter = str_pad($num + 1, 3, '0', STR_PAD_LEFT);

            Yii::app()->db->createCommand()->insert('tbl_dispatchequipment', array(
                'dispatch'=>$dispatch,
                'counter'=>$counter,
                'equipmentid'=>$_POST['id']
            ));
            echo json_encode(array(
                'success'=>true,
                'msg'=>'Save equipment successful'
            ));
        }
        
        Yii::app()->end();
    }

}
